12596
19484
Jeg har et datasett som gitt nedenfor
navn col1 col2
a 10,3 10,9
b 11 15
c 20 7.2
d 6.2 6.2
e 5.3 5.4
f 4.5 4.0
Jeg vil sammenligne col1 og col2 i min df, og jeg vil lage en annen kolonne der mens jeg sammenligner col1- og col2-verdier hvis verdien av col2 øker fra col1, vil jeg legge inn økning ved siden av dem i kolonnen min der, og hvis de avtagende så vil jeg skrive avtagende og ingen endringer hvis de er de samme
og jeg vil ha utdataene mine slik
navn col1 col2 col3
en økning på 10,3 10,9
b 11 15 økende
c 20 7.2 avtagende
d 6.2 6.2 ingen endring
e 5.3 5.4 øker
f 4,5 4,0 avtagende 
Med dplyr:
df%>%
mutere (Col3 = ifelse (col2 == col1,
"ingen endring",
ifelse (col2> col1,
"økende", "avtagende")))
Eller bruk case_when som foreslått av @akrun:
df%>%
mutere (Col3 = case_when (col1 == col2 ~ "ingen endring",
col2> col1 ~ "Øker",
SANT ~ "avtar"))
Resultat:
navn col1 col2 Col3
1 a 10,3 10,9 økende
2 b 11,0 15,0 økende
3 c 20.0 7.2 avtagende
4 d 6,2 6,2 ingen endring
5 e 5.3 5.4 økende
6 f 4,5 4,0 avtagende
Data:
df <-struktur (liste (navn = c ("a", "b", "c", "d", "e", "f"), col1 = c (10.3,
11, 20, 6.2, 5.3, 4.5), col2 = c (10.9, 15, 7.2, 6.2, 5.4, 4)), class = "data.frame", rad.names = c (NA,
-6L))
|
Vi kan trekke col1 av col2 og deretter bruke tegn for å tilordne verdier
df $ col3 <- c ("avtagende", "ingen endring", "økende") [tegn (df $ col1 - df $ col2) + 2]
df
# navn col1 col2 col3
# 1 a 10.3 10.9 synkende
# 2 b 11.0 15.0 synkende
# 3 c 20.0 7.2 øker
# 4 d 6.2 6.2 ingen endring
# 5 e 5.3 5.4 avtagende
# 6 f 4.5 4.0 øker
Eller ved å bruke dplyr kan vi bruke case_when
bibliotek (dplyr)
df%>%
mutere (col3 = case_when (col1 == col2 ~ "ingen endring",
col1> col2 ~ "økende",
SANT ~ "avtar"))
|
Base R
df $ col3 <-med (df, ifelse (col1> col2, "avtagende",
ifelse (col1